package com.link.play.fit.ai.utils

import com.link.play.fit.ai.databinding.FgHeightWeightBinding
import kotlin.math.roundToInt

//BMR（基础代谢率，Basal Metabolic Rate）
//增重：目标卡路里 = BMR + 目标额外摄入热量
//减重：目标卡路里 = BMR - 目标减少热量
//保持体重：目标卡路里 = BMR


//1k对应的卡路里
const val kgCal = 7700

//1lbs对应卡路里
const val lbsCal = 3500


/**
 * 男性BMR
 */
fun generateBMRMale(kg: Int, cm: Int, age: Int): Double {
    return (13.397 * kg) + (4.799 * cm) - (5.677 * age) + 88.362
}

/**
 * 女性BMR
 */
fun generateBMRFemale(kg: Int, cm: Int, age: Int): Double {
    return (9.247 * kg) + (3.098 * cm) - (4.33 * age) + 447.593
}


/**
 * 根据卡路里和体重转换为每日蛋白质重量g
 * @param d 系数    男性：d = 1.0  女性：d = 0.75
 */
fun getProteinByCal(lbs: Int, cal: Int, d: Float): Int {
//    return ((d * lbs) + (cal * 0.05)).roundToInt()
//    蛋白质(g) = (总卡路里 × 蛋白质比例) ÷ 4
    return ((cal * 0.3) / 4).roundToInt()
}

/**
 * 根据卡路里转换为每日所需脂肪重量g
 */
fun getFatsByCal(cal: Int): Int {
    return ((0.25 * cal) / 9).roundToInt()
}

/**
 * 根据卡路里转换为每日所需碳水化合物重量g
 */
fun getCarbsByCal(cal: Int, protein: Int, fats: Int): Int {
    return (cal - protein * 4 - fats * 9) / 4
}

/**
 * kg->lbs
 */
fun convertKgToLbs(kg: Int): Int {
    // 1 kg = 2.20462 lb，四舍五入为 2.205
    val lb = kg * 2.20462
    // 返回结果，四舍五入到最接近的整数
    return lb.roundToInt()
}

/**
 * lbs->kg
 */
fun convertLbsToKg(lb: Int): Int {
    // 1 lb = 0.453592 kg，四舍五入为 0.454
    val kg = lb * 0.453592
    // 返回结果，四舍五入到最接近的整数
    return kg.roundToInt()
}


/**
 * 锻炼的卡路里
 */
fun getExerciseCal(met: Float, weightKg: Int, timeH: Float): Int {
    return (met * weightKg * timeH).roundToInt()
}


